{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = '2'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import altair as alt\n",
    "import time\n",
    "from tqdm import tqdm\n",
    "from path_explain.path_explainer_tf import PathExplainerTF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "baseline = np.random.randn(1000, 10).astype(np.float32)\n",
    "inputs = np.random.randn(50, 10).astype(np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = tf.keras.models.Sequential()\n",
    "model.add(tf.keras.layers.Input(10, dtype=tf.float32))\n",
    "model.add(tf.keras.layers.Dense(5, activation=tf.keras.activations.softplus, use_bias=True))\n",
    "model.add(tf.keras.layers.Dense(1, activation=None, use_bias=False))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "explainer = PathExplainerTF(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "current_alphas = explainer._sample_alphas(num_samples=100, use_expectation=True, use_product=True)\n",
    "interactions = explainer._single_interaction(inputs[0], baseline,\n",
    "                              current_alphas, num_samples=100, batch_size=50,\n",
    "                              use_expectation=True, output_index=None,\n",
    "                              interaction_index=None)\n",
    "assert interactions.shape == (10, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Testing Shape\n",
    "We need to make sure our attributions return an array of the right shape."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50/50 [00:00<00:00, 210.28it/s]\n"
     ]
    }
   ],
   "source": [
    "interactions = explainer.interactions(inputs, baseline,\n",
    "                     batch_size=100, num_samples=100,\n",
    "                     use_expectation=True, output_indices=[0] * len(inputs),\n",
    "                     verbose=True, interaction_index=0)\n",
    "assert interactions.shape == (50, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50/50 [00:07<00:00,  6.64it/s]\n"
     ]
    }
   ],
   "source": [
    "interactions = explainer.interactions(inputs, baseline,\n",
    "                     batch_size=100, num_samples=100,\n",
    "                     use_expectation=True, output_indices=[0] * len(inputs),\n",
    "                     verbose=True, interaction_index=None)\n",
    "assert interactions.shape == (50, 10, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Testing completeness\n",
    "We need to make sure our interactions satisfy completeness!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50/50 [00:07<00:00,  6.84it/s]\n"
     ]
    }
   ],
   "source": [
    "interactions = explainer.interactions(inputs, baseline,\n",
    "                     batch_size=100, num_samples=100,\n",
    "                     use_expectation=True, output_indices=[0] * len(inputs),\n",
    "                     verbose=True, interaction_index=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50/50 [00:00<00:00, 343.45it/s]\n"
     ]
    }
   ],
   "source": [
    "attributions = explainer.attributions(inputs, baseline,\n",
    "                     batch_size=100, num_samples=100,\n",
    "                     use_expectation=True, output_indices=[0] * len(inputs),\n",
    "                     verbose=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<div id=\"altair-viz-9b6cdf3ccd404ba0bfba773a659656b0\"></div>\n",
       "<script type=\"text/javascript\">\n",
       "  (function(spec, embedOpt){\n",
       "    const outputDiv = document.getElementById(\"altair-viz-9b6cdf3ccd404ba0bfba773a659656b0\");\n",
       "    const paths = {\n",
       "      \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
       "      \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
       "      \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.0.2?noext\",\n",
       "      \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n",
       "    };\n",
       "\n",
       "    function loadScript(lib) {\n",
       "      return new Promise(function(resolve, reject) {\n",
       "        var s = document.createElement('script');\n",
       "        s.src = paths[lib];\n",
       "        s.async = true;\n",
       "        s.onload = () => resolve(paths[lib]);\n",
       "        s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      });\n",
       "    }\n",
       "\n",
       "    function showError(err) {\n",
       "      outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
       "      throw err;\n",
       "    }\n",
       "\n",
       "    function displayChart(vegaEmbed) {\n",
       "      vegaEmbed(outputDiv, spec, embedOpt)\n",
       "        .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
       "    }\n",
       "\n",
       "    if(typeof define === \"function\" && define.amd) {\n",
       "      requirejs.config({paths});\n",
       "      require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
       "    } else if (typeof vegaEmbed === \"function\") {\n",
       "      displayChart(vegaEmbed);\n",
       "    } else {\n",
       "      loadScript(\"vega\")\n",
       "        .then(() => loadScript(\"vega-lite\"))\n",
       "        .then(() => loadScript(\"vega-embed\"))\n",
       "        .catch(showError)\n",
       "        .then(() => displayChart(vegaEmbed));\n",
       "    }\n",
       "  })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-83a18e82358d31015797011ec54b624c\"}, \"mark\": \"point\", \"encoding\": {\"x\": {\"type\": \"quantitative\", \"field\": \"attributions\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"summed interactions\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.0.2.json\", \"datasets\": {\"data-83a18e82358d31015797011ec54b624c\": [{\"attributions\": 0.32640713453292847, \"summed interactions\": 0.3463838034076616}, {\"attributions\": -0.010836673900485039, \"summed interactions\": -0.0013030748814344406}, {\"attributions\": -0.1935400366783142, \"summed interactions\": -0.2963153704768047}, {\"attributions\": 0.3613549768924713, \"summed interactions\": 0.38773781989584677}, {\"attributions\": -0.026966331526637077, \"summed interactions\": -0.03944846848389716}, {\"attributions\": 0.01854638382792473, \"summed interactions\": 0.03498415945796296}, {\"attributions\": -0.07626018673181534, \"summed interactions\": -0.09915650423499756}, {\"attributions\": 0.30404824018478394, \"summed interactions\": 0.2878436647588387}, {\"attributions\": -0.006661549676209688, \"summed interactions\": 0.012806444079615176}, {\"attributions\": 0.052728548645973206, \"summed interactions\": 0.10245210188440979}, {\"attributions\": -0.08298522233963013, \"summed interactions\": -0.04414469934999943}, {\"attributions\": -0.06118115037679672, \"summed interactions\": -0.09537294169422239}, {\"attributions\": 0.43393394351005554, \"summed interactions\": 0.36527242994634435}, {\"attributions\": 0.03575833886861801, \"summed interactions\": 0.051912084812101966}, {\"attributions\": -0.2942407727241516, \"summed interactions\": -0.2965775344055146}, {\"attributions\": 0.04310808703303337, \"summed interactions\": 0.04122344363713637}, {\"attributions\": 0.12797820568084717, \"summed interactions\": 0.11454611233784817}, {\"attributions\": -0.447785884141922, \"summed interactions\": -0.46918291445854265}, {\"attributions\": 0.002979084150865674, \"summed interactions\": 0.01802633301122114}, {\"attributions\": 0.7794061303138733, \"summed interactions\": 0.906806479441002}, {\"attributions\": 0.08101879060268402, \"summed interactions\": 0.06057065032655373}, {\"attributions\": 0.15771564841270447, \"summed interactions\": 0.20683840150013566}, {\"attributions\": 0.8715280294418335, \"summed interactions\": 0.7408642736263573}, {\"attributions\": -0.16543975472450256, \"summed interactions\": -0.21467009675689042}, {\"attributions\": 0.3572854697704315, \"summed interactions\": 0.40177412587217987}, {\"attributions\": 0.005086640827357769, \"summed interactions\": -0.007017718307906762}, {\"attributions\": -0.045447610318660736, \"summed interactions\": -0.03830614915932529}, {\"attributions\": -0.3769493103027344, \"summed interactions\": -0.38322090404108167}, {\"attributions\": 0.025620555505156517, \"summed interactions\": 0.017190974816912785}, {\"attributions\": -0.19247163832187653, \"summed interactions\": -0.14801105188234942}, {\"attributions\": -0.05110660567879677, \"summed interactions\": -0.06956469622673467}, {\"attributions\": -0.07457584142684937, \"summed interactions\": -0.0708880660822615}, {\"attributions\": -0.0658651739358902, \"summed interactions\": -0.10327414749190211}, {\"attributions\": 0.3280363082885742, \"summed interactions\": 0.22675749263726175}, {\"attributions\": -0.1339074969291687, \"summed interactions\": -0.15071646007709205}, {\"attributions\": 0.11028539389371872, \"summed interactions\": 0.10541688988450915}, {\"attributions\": -0.02257005125284195, \"summed interactions\": -0.023340841999015538}, {\"attributions\": -0.002801265101879835, \"summed interactions\": 0.002623425330966711}, {\"attributions\": -0.032632358372211456, \"summed interactions\": -0.0030300338512461167}, {\"attributions\": -0.09736557304859161, \"summed interactions\": -0.04167261690599844}, {\"attributions\": -0.0032294029369950294, \"summed interactions\": -0.06803832930745557}, {\"attributions\": 0.0009453878737986088, \"summed interactions\": 0.005206405643548351}, {\"attributions\": 0.24944081902503967, \"summed interactions\": 0.25515633705072105}, {\"attributions\": -0.4072323739528656, \"summed interactions\": -0.37116493680514395}, {\"attributions\": 0.2042902410030365, \"summed interactions\": 0.22263402071985183}, {\"attributions\": 0.013037439435720444, \"summed interactions\": -0.005440461187390611}, {\"attributions\": 0.04158994182944298, \"summed interactions\": 0.05719622412289027}, {\"attributions\": -0.08286300301551819, \"summed interactions\": -0.12830810621380806}, {\"attributions\": 0.01106186117976904, \"summed interactions\": 0.009132325227255933}, {\"attributions\": 0.5273593664169312, \"summed interactions\": 0.5935693169012666}, {\"attributions\": 0.04831869527697563, \"summed interactions\": 0.057529397920006886}, {\"attributions\": -0.07420849800109863, \"summed interactions\": -0.06699590489733964}, {\"attributions\": -0.8279577493667603, \"summed interactions\": -0.8588165412656963}, {\"attributions\": -0.11670133471488953, \"summed interactions\": -0.05453421772108413}, {\"attributions\": -0.09875139594078064, \"summed interactions\": -0.12896935339085758}, {\"attributions\": 0.1159118264913559, \"summed interactions\": 0.10928136652364628}, {\"attributions\": -0.04290752857923508, \"summed interactions\": -0.04450282498146407}, {\"attributions\": -0.4039252996444702, \"summed interactions\": -0.43414025753736496}, {\"attributions\": -0.10997308045625687, \"summed interactions\": -0.09629463851160835}, {\"attributions\": 0.32681792974472046, \"summed interactions\": 0.32774301897734404}, {\"attributions\": 0.17089317739009857, \"summed interactions\": 0.18215808222885244}, {\"attributions\": -0.0002969376801047474, \"summed interactions\": 0.03705435857409611}, {\"attributions\": 0.769929826259613, \"summed interactions\": 0.6148423638660461}, {\"attributions\": -0.19877813756465912, \"summed interactions\": -0.1534740900970064}, {\"attributions\": -0.1864088773727417, \"summed interactions\": -0.21872964722570032}, {\"attributions\": -0.013242056593298912, \"summed interactions\": 0.00185915466863662}, {\"attributions\": 0.04680267348885536, \"summed interactions\": 0.053155085566686466}, {\"attributions\": -0.06763122975826263, \"summed interactions\": -0.14195220250985585}, {\"attributions\": 0.012963634915649891, \"summed interactions\": 0.0020191888615954667}, {\"attributions\": 0.5009150505065918, \"summed interactions\": 0.4395324718207121}, {\"attributions\": -0.049424875527620316, \"summed interactions\": -0.0630298908399709}, {\"attributions\": 0.00027666331152431667, \"summed interactions\": -0.0062272554787341505}, {\"attributions\": 0.18328392505645752, \"summed interactions\": 0.2500491347454954}, {\"attributions\": 0.6820018291473389, \"summed interactions\": 0.7015446012082975}, {\"attributions\": -0.0013927051331847906, \"summed interactions\": -0.016266525635728613}, {\"attributions\": 0.00901699997484684, \"summed interactions\": 0.011514275101944804}, {\"attributions\": 0.0422077514231205, \"summed interactions\": 0.03285849078292813}, {\"attributions\": -0.4155949652194977, \"summed interactions\": -0.43512424231448676}, {\"attributions\": -0.004189630039036274, \"summed interactions\": -0.021529442921746522}, {\"attributions\": -0.16037622094154358, \"summed interactions\": -0.14029212953755632}, {\"attributions\": -0.321577787399292, \"summed interactions\": -0.3219901494740043}, {\"attributions\": -0.0015093499096110463, \"summed interactions\": -0.01301070464978693}, {\"attributions\": -0.043954115360975266, \"summed interactions\": -0.07314545288681984}, {\"attributions\": 0.20966754853725433, \"summed interactions\": 0.20279800752177835}, {\"attributions\": -0.05357859656214714, \"summed interactions\": -0.12092862783174496}, {\"attributions\": -0.009584621526300907, \"summed interactions\": -0.005886188897420652}, {\"attributions\": 0.052761830389499664, \"summed interactions\": 0.053122269790037535}, {\"attributions\": -0.0686478316783905, \"summed interactions\": 0.016063345814472996}, {\"attributions\": -0.006779399700462818, \"summed interactions\": -0.008716456790352822}, {\"attributions\": 0.14603886008262634, \"summed interactions\": 0.13190065961680375}, {\"attributions\": 0.13841432332992554, \"summed interactions\": 0.1366733315808233}, {\"attributions\": -0.001871395157650113, \"summed interactions\": -0.0013880992482881993}, {\"attributions\": 0.8961911201477051, \"summed interactions\": 0.832372680073604}, {\"attributions\": -0.26594701409339905, \"summed interactions\": -0.24450687947683036}, {\"attributions\": 0.1818651258945465, \"summed interactions\": 0.20138434710679576}, {\"attributions\": 0.021375002339482307, \"summed interactions\": 0.014117139740847051}, {\"attributions\": 0.02741134911775589, \"summed interactions\": 0.07143422513036057}, {\"attributions\": -0.3699197769165039, \"summed interactions\": -0.4587627765722573}, {\"attributions\": 0.04362143203616142, \"summed interactions\": 0.011601573234656826}, {\"attributions\": 0.04231962189078331, \"summed interactions\": 0.0674410576466471}, {\"attributions\": 0.1604839563369751, \"summed interactions\": 0.12275799294002354}, {\"attributions\": -0.097124844789505, \"summed interactions\": -0.11175772338174284}, {\"attributions\": 0.06339644640684128, \"summed interactions\": 0.028120625487645157}, {\"attributions\": 0.07298333197832108, \"summed interactions\": 0.09190907538868487}, {\"attributions\": -0.2141389399766922, \"summed interactions\": -0.21599321035319008}, {\"attributions\": 0.08725298941135406, \"summed interactions\": 0.0506289922632277}, {\"attributions\": -0.052015919238328934, \"summed interactions\": -0.05309293605387211}, {\"attributions\": 0.14801974594593048, \"summed interactions\": 0.13380023156059906}, {\"attributions\": 0.0459466353058815, \"summed interactions\": 0.022067587880883366}, {\"attributions\": -0.1812971532344818, \"summed interactions\": -0.14963724510744214}, {\"attributions\": 0.03667791560292244, \"summed interactions\": 0.03684982904815115}, {\"attributions\": 0.09358998388051987, \"summed interactions\": 0.09082768578809919}, {\"attributions\": -0.00017583341104909778, \"summed interactions\": 0.08377557777566835}, {\"attributions\": 0.19994626939296722, \"summed interactions\": 0.24531023181043565}, {\"attributions\": 0.05693943798542023, \"summed interactions\": 0.05001222397550009}, {\"attributions\": 0.3033638298511505, \"summed interactions\": 0.32309129962231964}, {\"attributions\": -0.03197508677840233, \"summed interactions\": -0.061833996427594684}, {\"attributions\": -0.4883227050304413, \"summed interactions\": -0.49232506309635937}, {\"attributions\": 0.011311470530927181, \"summed interactions\": 0.002880363514123019}, {\"attributions\": -0.24644127488136292, \"summed interactions\": -0.19663873652461916}, {\"attributions\": -0.0037205794360488653, \"summed interactions\": -0.009483285990427248}, {\"attributions\": 0.28160202503204346, \"summed interactions\": 0.2832269265782088}, {\"attributions\": 0.2100052386522293, \"summed interactions\": 0.16029520870870329}, {\"attributions\": -0.2791357934474945, \"summed interactions\": -0.31637369420423056}, {\"attributions\": 0.06451978534460068, \"summed interactions\": 0.08430070197209716}, {\"attributions\": 0.12110497802495956, \"summed interactions\": 0.10190128133399412}, {\"attributions\": -0.06430673599243164, \"summed interactions\": -0.053697754672612064}, {\"attributions\": -0.01797139085829258, \"summed interactions\": -0.02127824774288456}, {\"attributions\": -0.19176089763641357, \"summed interactions\": -0.17058640561299399}, {\"attributions\": -0.7134279012680054, \"summed interactions\": -0.7614076076424681}, {\"attributions\": 0.12602797150611877, \"summed interactions\": 0.07746710127685219}, {\"attributions\": 0.062076959758996964, \"summed interactions\": 0.01490476680919528}, {\"attributions\": -0.1990853101015091, \"summed interactions\": -0.22107467445312068}, {\"attributions\": 0.2859705090522766, \"summed interactions\": 0.2991821870091371}, {\"attributions\": -0.045032959431409836, \"summed interactions\": -0.05087397282477468}, {\"attributions\": -0.09009960293769836, \"summed interactions\": -0.08839900355087593}, {\"attributions\": 0.11030419170856476, \"summed interactions\": 0.14065766352359788}, {\"attributions\": 0.42341917753219604, \"summed interactions\": 0.42620989138958976}, {\"attributions\": 0.05507342889904976, \"summed interactions\": 0.06701604292538832}, {\"attributions\": 0.9206617474555969, \"summed interactions\": 0.7998186319600791}, {\"attributions\": 0.32060959935188293, \"summed interactions\": 0.33345597167499363}, {\"attributions\": -0.03438109904527664, \"summed interactions\": -0.03587429455365054}, {\"attributions\": -0.23549847304821014, \"summed interactions\": -0.22753622039454058}, {\"attributions\": 0.25288212299346924, \"summed interactions\": 0.3085231500444934}, {\"attributions\": -0.02885022573173046, \"summed interactions\": 0.004310870041081216}, {\"attributions\": 0.005420276895165443, \"summed interactions\": 0.008858400440658443}, {\"attributions\": -0.024589352309703827, \"summed interactions\": -0.026353084438596852}, {\"attributions\": -0.210011824965477, \"summed interactions\": -0.1622179324622266}, {\"attributions\": -0.0017150241183117032, \"summed interactions\": -0.00013013326679356396}, {\"attributions\": 0.22400684654712677, \"summed interactions\": 0.21197295939782634}, {\"attributions\": -0.15990428626537323, \"summed interactions\": -0.18520503442414338}, {\"attributions\": 0.0761045292019844, \"summed interactions\": 0.07003548194188625}, {\"attributions\": -0.48183560371398926, \"summed interactions\": -0.46375789982266724}, {\"attributions\": 0.12153010070323944, \"summed interactions\": 0.06650319757682155}, {\"attributions\": 0.1454363614320755, \"summed interactions\": 0.1561122716520913}, {\"attributions\": 0.005917779169976711, \"summed interactions\": -0.0025775259418878704}, {\"attributions\": -0.013648957014083862, \"summed interactions\": -0.013660178552527213}, {\"attributions\": -0.020729124546051025, \"summed interactions\": -0.00966319747385569}, {\"attributions\": -0.002051660791039467, \"summed interactions\": -0.015091034772922285}, {\"attributions\": 0.2881336510181427, \"summed interactions\": 0.21041585985949496}, {\"attributions\": 0.0042069400660693645, \"summed interactions\": 0.05703206651378423}, {\"attributions\": 0.11974381655454636, \"summed interactions\": 0.16791133153265037}, {\"attributions\": -0.8765081167221069, \"summed interactions\": -0.9535422508488409}, {\"attributions\": -0.2131478190422058, \"summed interactions\": -0.23918608552776277}, {\"attributions\": -0.14553946256637573, \"summed interactions\": -0.1457151334907394}, {\"attributions\": 0.12798245251178741, \"summed interactions\": 0.13642220298061147}, {\"attributions\": 0.022184595465660095, \"summed interactions\": 0.039413059887010604}, {\"attributions\": 0.21519750356674194, \"summed interactions\": 0.2231081078061834}, {\"attributions\": 0.015898799523711205, \"summed interactions\": 0.01705130685468248}, {\"attributions\": 0.44157302379608154, \"summed interactions\": 0.5128494603559375}, {\"attributions\": 0.4617174565792084, \"summed interactions\": 0.4479808555915952}, {\"attributions\": 0.09935466945171356, \"summed interactions\": 0.06164337554946542}, {\"attributions\": -0.7947104573249817, \"summed interactions\": -0.9094333881512284}, {\"attributions\": 0.32076480984687805, \"summed interactions\": 0.3671957696788013}, {\"attributions\": 0.4342290461063385, \"summed interactions\": 0.4538754806853831}, {\"attributions\": -0.0023542188573628664, \"summed interactions\": -0.005457850216771476}, {\"attributions\": 0.11232993751764297, \"summed interactions\": 0.1262946054339409}, {\"attributions\": 0.17017003893852234, \"summed interactions\": 0.13356714695692062}, {\"attributions\": 0.03742049261927605, \"summed interactions\": 0.02823008646373637}, {\"attributions\": -0.2994200587272644, \"summed interactions\": -0.36713691195473075}, {\"attributions\": 0.1607121080160141, \"summed interactions\": 0.12440777802839875}, {\"attributions\": -0.2303018420934677, \"summed interactions\": -0.2936762758763507}, {\"attributions\": -0.7735800743103027, \"summed interactions\": -0.933003187761642}, {\"attributions\": 0.33131805062294006, \"summed interactions\": 0.30519752332475036}, {\"attributions\": -0.08826728165149689, \"summed interactions\": -0.09328876133076847}, {\"attributions\": -0.15187913179397583, \"summed interactions\": -0.17285987897048471}, {\"attributions\": -0.026867559179663658, \"summed interactions\": -0.006283562397584319}, {\"attributions\": -0.22451525926589966, \"summed interactions\": -0.19310065160971135}, {\"attributions\": 0.021233169361948967, \"summed interactions\": 0.0018727317219600081}, {\"attributions\": -0.5611215829849243, \"summed interactions\": -0.4910428032744676}, {\"attributions\": -0.03519050404429436, \"summed interactions\": -0.011949527892284095}, {\"attributions\": 0.12309569120407104, \"summed interactions\": 0.13345944235334173}, {\"attributions\": -0.26833197474479675, \"summed interactions\": -0.25560333402245305}, {\"attributions\": -0.07289732247591019, \"summed interactions\": -0.09417294128797948}, {\"attributions\": 0.12733830511569977, \"summed interactions\": 0.11566606610722374}, {\"attributions\": 0.13966459035873413, \"summed interactions\": 0.14889556379057467}, {\"attributions\": -0.02603856287896633, \"summed interactions\": -0.045778837651596405}, {\"attributions\": -0.2966940104961395, \"summed interactions\": -0.2606142238873872}, {\"attributions\": 0.052996501326560974, \"summed interactions\": 0.0605958346859552}, {\"attributions\": -0.058107972145080566, \"summed interactions\": -0.023878261155914515}, {\"attributions\": 0.27058589458465576, \"summed interactions\": 0.2311125941341743}, {\"attributions\": -0.004681420512497425, \"summed interactions\": -0.0045936865208204836}, {\"attributions\": 0.013286083936691284, \"summed interactions\": 0.006101961567765102}, {\"attributions\": -0.3851701021194458, \"summed interactions\": -0.335814289865084}, {\"attributions\": 0.07681361585855484, \"summed interactions\": 0.11871839285595343}, {\"attributions\": -0.018838003277778625, \"summed interactions\": -0.017704299454635475}, {\"attributions\": 0.08950585126876831, \"summed interactions\": 0.09626437939004973}, {\"attributions\": 0.45295751094818115, \"summed interactions\": 0.3325376607826911}, {\"attributions\": -0.004500447306782007, \"summed interactions\": 0.013895814685383812}, {\"attributions\": 0.22076080739498138, \"summed interactions\": 0.32355859470408177}, {\"attributions\": 0.14444996416568756, \"summed interactions\": 0.16651088115759194}, {\"attributions\": -0.03225003182888031, \"summed interactions\": -0.04351295199012384}, {\"attributions\": -0.4096011817455292, \"summed interactions\": -0.468861089379061}, {\"attributions\": 0.08639562875032425, \"summed interactions\": 0.02053784008603543}, {\"attributions\": -0.2937939167022705, \"summed interactions\": -0.261544156470336}, {\"attributions\": 0.024651076644659042, \"summed interactions\": 0.03546737367287278}, {\"attributions\": 0.10254941880702972, \"summed interactions\": 0.07701704594364855}, {\"attributions\": 0.03570719063282013, \"summed interactions\": 0.025835461769020185}, {\"attributions\": -0.0595090277493, \"summed interactions\": -0.06856828661693726}, {\"attributions\": 0.3976212441921234, \"summed interactions\": 0.3964851393830031}, {\"attributions\": -0.014789361506700516, \"summed interactions\": -0.030553522636182606}, {\"attributions\": 0.10198671370744705, \"summed interactions\": 0.0788800532463938}, {\"attributions\": 0.08364830166101456, \"summed interactions\": 0.06194224001956172}, {\"attributions\": 0.13023187220096588, \"summed interactions\": 0.1299626738182269}, {\"attributions\": -0.10759638994932175, \"summed interactions\": -0.109044709301088}, {\"attributions\": -0.07005606591701508, \"summed interactions\": -0.08064375747926533}, {\"attributions\": -0.015883827582001686, \"summed interactions\": -0.02727482921909541}, {\"attributions\": 0.22702257335186005, \"summed interactions\": 0.19453087565489113}, {\"attributions\": 0.038520634174346924, \"summed interactions\": 0.04361703939503059}, {\"attributions\": -0.14543269574642181, \"summed interactions\": -0.11446151192649268}, {\"attributions\": -0.39461567997932434, \"summed interactions\": -0.31536623765714467}, {\"attributions\": 0.08423018455505371, \"summed interactions\": 0.1357910722726956}, {\"attributions\": 0.7347862124443054, \"summed interactions\": 0.6722603933303617}, {\"attributions\": 0.39537349343299866, \"summed interactions\": 0.24162483494728804}, {\"attributions\": -0.04722936451435089, \"summed interactions\": -0.06078753495239653}, {\"attributions\": -0.05448530241847038, \"summed interactions\": -0.05566950757201994}, {\"attributions\": -0.11380525678396225, \"summed interactions\": -0.09341947213397361}, {\"attributions\": -0.15725603699684143, \"summed interactions\": -0.15708588316920213}, {\"attributions\": 0.011430423706769943, \"summed interactions\": 0.01675972242082935}, {\"attributions\": 0.20011849701404572, \"summed interactions\": 0.09048645151779056}, {\"attributions\": -0.11922981590032578, \"summed interactions\": -0.12215044570621103}, {\"attributions\": -0.16473543643951416, \"summed interactions\": -0.15816912767331814}, {\"attributions\": -0.8026989698410034, \"summed interactions\": -0.8022772605763748}, {\"attributions\": 0.6501456499099731, \"summed interactions\": 0.5165099596633809}, {\"attributions\": -0.1182628646492958, \"summed interactions\": -0.11010344041278586}, {\"attributions\": -0.12942761182785034, \"summed interactions\": -0.16423261425370583}, {\"attributions\": -0.007726519834250212, \"summed interactions\": -0.008185435308405431}, {\"attributions\": -0.613674521446228, \"summed interactions\": -0.4831624075304717}, {\"attributions\": -0.09008434414863586, \"summed interactions\": -0.08550647706942982}, {\"attributions\": -0.02126278355717659, \"summed interactions\": -0.05223667164682411}, {\"attributions\": 0.20940905809402466, \"summed interactions\": 0.1838200989877805}, {\"attributions\": 0.005343108903616667, \"summed interactions\": 0.03027359046973288}, {\"attributions\": 0.818735659122467, \"summed interactions\": 0.9911529491655529}, {\"attributions\": 0.20862111449241638, \"summed interactions\": 0.31794489035382867}, {\"attributions\": -0.1642547845840454, \"summed interactions\": -0.1528949006460607}, {\"attributions\": -0.06860001385211945, \"summed interactions\": -0.036846760456683114}, {\"attributions\": 0.028263835236430168, \"summed interactions\": 0.028087519051041454}, {\"attributions\": -0.32934463024139404, \"summed interactions\": -0.35432559973560274}, {\"attributions\": 0.02230289950966835, \"summed interactions\": 0.005340743082342669}, {\"attributions\": -0.04281355068087578, \"summed interactions\": -0.11071284755598754}, {\"attributions\": 0.08147966116666794, \"summed interactions\": 0.055605301284231246}, {\"attributions\": 0.014665449969470501, \"summed interactions\": 0.03408228844637051}, {\"attributions\": -0.2743593752384186, \"summed interactions\": -0.1808257824741304}, {\"attributions\": -0.23069429397583008, \"summed interactions\": -0.23243209021165967}, {\"attributions\": -0.016197917982935905, \"summed interactions\": 0.03513542073778808}, {\"attributions\": 0.0027196165174245834, \"summed interactions\": -0.010354995785746723}, {\"attributions\": -0.045130886137485504, \"summed interactions\": -0.06480153283337131}, {\"attributions\": -0.030226945877075195, \"summed interactions\": -0.08036764446296729}, {\"attributions\": 0.004353056661784649, \"summed interactions\": 0.0027278562483843416}, {\"attributions\": 0.8541944026947021, \"summed interactions\": 0.9115642858669162}, {\"attributions\": 0.3465840220451355, \"summed interactions\": 0.308132263366133}, {\"attributions\": 0.021585432812571526, \"summed interactions\": -0.022518906434925157}, {\"attributions\": 0.2684785723686218, \"summed interactions\": 0.25564029627275886}, {\"attributions\": -0.030040929093956947, \"summed interactions\": -0.018482167724869214}, {\"attributions\": -0.19932633638381958, \"summed interactions\": -0.15096984565025195}, {\"attributions\": -0.0126815065741539, \"summed interactions\": 0.011644115060335025}, {\"attributions\": -0.04863269254565239, \"summed interactions\": -0.04882759286920191}, {\"attributions\": 0.0413982979953289, \"summed interactions\": 0.0618141175218625}, {\"attributions\": 0.035388581454753876, \"summed interactions\": 0.03831142996932613}, {\"attributions\": -0.3628219962120056, \"summed interactions\": -0.31680084101390094}, {\"attributions\": 0.20195482671260834, \"summed interactions\": 0.19260020949877799}, {\"attributions\": 0.3333646059036255, \"summed interactions\": 0.39007132171536796}, {\"attributions\": -0.09311883896589279, \"summed interactions\": -0.1277341771638021}, {\"attributions\": -0.6818487048149109, \"summed interactions\": -0.6661838716827333}, {\"attributions\": -0.08813894540071487, \"summed interactions\": -0.0472964930395392}, {\"attributions\": -0.04267251119017601, \"summed interactions\": -0.06986019275791477}, {\"attributions\": -0.011373573914170265, \"summed interactions\": -0.006581088280654512}, {\"attributions\": -0.18458855152130127, \"summed interactions\": -0.1369766095194791}, {\"attributions\": 0.036913786083459854, \"summed interactions\": 0.030285945307696238}, {\"attributions\": 0.34962883591651917, \"summed interactions\": 0.2820348412496969}, {\"attributions\": 0.01723766140639782, \"summed interactions\": 0.02371259634674061}, {\"attributions\": 0.21479783952236176, \"summed interactions\": 0.21764887386234477}, {\"attributions\": -0.09749811142683029, \"summed interactions\": -0.16735428138053976}, {\"attributions\": 0.28293102979660034, \"summed interactions\": 0.30136437073815614}, {\"attributions\": 0.01482250913977623, \"summed interactions\": 0.0254532404942438}, {\"attributions\": -0.0052611446008086205, \"summed interactions\": -0.016160205530468374}, {\"attributions\": 0.14731855690479279, \"summed interactions\": 0.11132294638082385}, {\"attributions\": -0.30973806977272034, \"summed interactions\": -0.3056976275402121}, {\"attributions\": -0.15831539034843445, \"summed interactions\": -0.15135000401642174}, {\"attributions\": -0.33477580547332764, \"summed interactions\": -0.3267751128296368}, {\"attributions\": -0.03604386746883392, \"summed interactions\": 0.0014698511713504558}, {\"attributions\": -0.03921891748905182, \"summed interactions\": -0.029682433465495706}, {\"attributions\": 0.3845694065093994, \"summed interactions\": 0.2554296614835039}, {\"attributions\": -0.07826115936040878, \"summed interactions\": -0.07168249215465039}, {\"attributions\": 0.2506881356239319, \"summed interactions\": 0.25268785818479955}, {\"attributions\": 0.015095398761332035, \"summed interactions\": 0.005528242967557162}, {\"attributions\": 0.019094645977020264, \"summed interactions\": 0.02136552520096302}, {\"attributions\": -0.1070236787199974, \"summed interactions\": -0.04485217927140184}, {\"attributions\": 0.029544124379754066, \"summed interactions\": 0.012696837191469967}, {\"attributions\": 0.14695337414741516, \"summed interactions\": 0.16941116328234784}, {\"attributions\": -0.06349128484725952, \"summed interactions\": -0.040020490596361924}, {\"attributions\": 0.04325904697179794, \"summed interactions\": 0.03927800603560172}, {\"attributions\": 0.42402714490890503, \"summed interactions\": 0.45227494777645916}, {\"attributions\": 0.07466945797204971, \"summed interactions\": 0.059410652796941577}, {\"attributions\": 0.19776618480682373, \"summed interactions\": 0.1716479955939576}, {\"attributions\": 0.1012900099158287, \"summed interactions\": 0.07819865067722276}, {\"attributions\": 0.09902668744325638, \"summed interactions\": 0.13054967431526165}, {\"attributions\": 0.42502540349960327, \"summed interactions\": 0.3399704021285288}, {\"attributions\": 0.027312908321619034, \"summed interactions\": 0.03842184375389479}, {\"attributions\": 0.34403908252716064, \"summed interactions\": 0.37339503900147974}, {\"attributions\": 0.05702795088291168, \"summed interactions\": 0.019811126519925892}, {\"attributions\": -0.0729447677731514, \"summed interactions\": -0.07140258586150594}, {\"attributions\": 0.32652267813682556, \"summed interactions\": 0.13668912957655266}, {\"attributions\": -0.3741922676563263, \"summed interactions\": -0.35016104858368635}, {\"attributions\": 0.06255845725536346, \"summed interactions\": 0.06494786287657917}, {\"attributions\": 0.07007789611816406, \"summed interactions\": 0.07041823596227914}, {\"attributions\": -0.012635371647775173, \"summed interactions\": -0.005797027406515554}, {\"attributions\": -0.3997741937637329, \"summed interactions\": -0.29308668701560237}, {\"attributions\": 0.16782258450984955, \"summed interactions\": 0.16204920405289158}, {\"attributions\": -0.021815402433276176, \"summed interactions\": 0.001846672414103523}, {\"attributions\": -0.11853287369012833, \"summed interactions\": -0.08681825574603863}, {\"attributions\": 0.02763710729777813, \"summed interactions\": -0.007904536527348682}, {\"attributions\": -0.06284689158201218, \"summed interactions\": -0.027056980412453413}, {\"attributions\": 0.08343467861413956, \"summed interactions\": 0.13752097365795635}, {\"attributions\": -0.034256208688020706, \"summed interactions\": -0.006293402810115367}, {\"attributions\": 0.05797909200191498, \"summed interactions\": 0.08023069624323398}, {\"attributions\": 0.011451087892055511, \"summed interactions\": 0.04964574516634457}, {\"attributions\": -0.058732353150844574, \"summed interactions\": -0.06483817899425048}, {\"attributions\": 0.03213322162628174, \"summed interactions\": 0.03414372471161187}, {\"attributions\": 0.049617160111665726, \"summed interactions\": 0.045916909381048754}, {\"attributions\": -0.47684311866760254, \"summed interactions\": -0.49562775320373476}, {\"attributions\": 0.003201246028766036, \"summed interactions\": 0.03879396851698402}, {\"attributions\": 0.07197023928165436, \"summed interactions\": 0.14584486308740452}, {\"attributions\": -0.04452463239431381, \"summed interactions\": -0.05053213295468595}, {\"attributions\": 0.02774902433156967, \"summed interactions\": 0.051234410144388676}, {\"attributions\": -0.010415256954729557, \"summed interactions\": -0.018299315066542476}, {\"attributions\": -0.03856083005666733, \"summed interactions\": -0.032902732491493225}, {\"attributions\": 0.5320439338684082, \"summed interactions\": 0.5912282436620444}, {\"attributions\": 0.0010447684908285737, \"summed interactions\": -0.007553866264061071}, {\"attributions\": -0.08727800101041794, \"summed interactions\": -0.05570716876536608}, {\"attributions\": 0.3858727514743805, \"summed interactions\": 0.4230826278217137}, {\"attributions\": -0.010657786391675472, \"summed interactions\": -0.026756390230730176}, {\"attributions\": -0.1510564684867859, \"summed interactions\": -0.2426472320803441}, {\"attributions\": -0.01640830934047699, \"summed interactions\": 0.004864800939685665}, {\"attributions\": -0.28823646903038025, \"summed interactions\": -0.2602432130370289}, {\"attributions\": -0.022401170805096626, \"summed interactions\": -0.025638735077336605}, {\"attributions\": 0.05622711032629013, \"summed interactions\": 0.030839285053843923}, {\"attributions\": 0.2906354069709778, \"summed interactions\": 0.3694052391801961}, {\"attributions\": -0.12804606556892395, \"summed interactions\": -0.09281217528041452}, {\"attributions\": 0.6543189287185669, \"summed interactions\": 0.589176774956286}, {\"attributions\": 0.09520626813173294, \"summed interactions\": 0.09638344991253689}, {\"attributions\": 0.0753801167011261, \"summed interactions\": 0.08309537527384236}, {\"attributions\": -0.07580886781215668, \"summed interactions\": -0.04523897817125544}, {\"attributions\": -0.27090007066726685, \"summed interactions\": -0.33475317375268787}, {\"attributions\": -0.06810571253299713, \"summed interactions\": -0.02163394440412958}, {\"attributions\": -0.02676694095134735, \"summed interactions\": -0.05080232194450218}, {\"attributions\": -0.04649825021624565, \"summed interactions\": -0.04041140031768009}, {\"attributions\": -0.6739951968193054, \"summed interactions\": -0.6740006466861814}, {\"attributions\": 0.006359215825796127, \"summed interactions\": 0.013104511446726974}, {\"attributions\": -0.007182470988482237, \"summed interactions\": -0.07628362006198586}, {\"attributions\": -0.12034153193235397, \"summed interactions\": -0.11776456845109351}, {\"attributions\": -0.052472177892923355, \"summed interactions\": -0.05651563609717414}, {\"attributions\": 0.33975791931152344, \"summed interactions\": 0.37781893578357995}, {\"attributions\": 0.04812287166714668, \"summed interactions\": 0.06690417038043961}, {\"attributions\": -0.27121302485466003, \"summed interactions\": -0.30478113453136757}, {\"attributions\": 0.07632189244031906, \"summed interactions\": 0.0882052409251628}, {\"attributions\": 0.0003475134144537151, \"summed interactions\": -0.0012586496750373044}, {\"attributions\": 0.19088689982891083, \"summed interactions\": 0.21492346219019964}, {\"attributions\": -0.0047402516938745975, \"summed interactions\": -0.003953692182676605}, {\"attributions\": -0.17940610647201538, \"summed interactions\": -0.24036863703804556}, {\"attributions\": -0.04505442455410957, \"summed interactions\": -0.03584207530366257}, {\"attributions\": -0.05597226321697235, \"summed interactions\": -0.03981116687646136}, {\"attributions\": 1.1499956846237183, \"summed interactions\": 0.9413621737039648}, {\"attributions\": 0.131280317902565, \"summed interactions\": 0.08889664325397462}, {\"attributions\": -0.23765985667705536, \"summed interactions\": -0.31056952400831506}, {\"attributions\": -0.013763027265667915, \"summed interactions\": -0.0024686638062121347}, {\"attributions\": 0.0445869080722332, \"summed interactions\": 0.051591335446573794}, {\"attributions\": -0.1617375761270523, \"summed interactions\": -0.17440255882684141}, {\"attributions\": -0.034135375171899796, \"summed interactions\": 0.00040163366065826267}, {\"attributions\": -0.39535149931907654, \"summed interactions\": -0.4552989258081652}, {\"attributions\": -0.5054230690002441, \"summed interactions\": -0.49736773455515504}, {\"attributions\": 0.03426364064216614, \"summed interactions\": 0.07751328317681327}, {\"attributions\": 0.0363907665014267, \"summed interactions\": 0.09517380723264068}, {\"attributions\": 0.23450429737567902, \"summed interactions\": 0.23963017657297314}, {\"attributions\": 0.6850013732910156, \"summed interactions\": 0.6622942424146459}, {\"attributions\": -0.016030583530664444, \"summed interactions\": -0.014017094246810302}, {\"attributions\": 0.009358958341181278, \"summed interactions\": -0.007643857891707739}, {\"attributions\": 0.9209169149398804, \"summed interactions\": 0.9088935691397637}, {\"attributions\": -0.007202224340289831, \"summed interactions\": 0.0023679875666857697}, {\"attributions\": -0.24635016918182373, \"summed interactions\": -0.2771718609974414}, {\"attributions\": 0.03211306780576706, \"summed interactions\": 0.018515053546252602}, {\"attributions\": 0.007126538082957268, \"summed interactions\": 0.02760611571284244}, {\"attributions\": -1.0896427631378174, \"summed interactions\": -1.1185815696953796}, {\"attributions\": 0.36869800090789795, \"summed interactions\": 0.38025831879213}, {\"attributions\": 0.05473988875746727, \"summed interactions\": 0.02942594310388813}, {\"attributions\": -0.07008965313434601, \"summed interactions\": -0.096544128988171}, {\"attributions\": 0.03653067722916603, \"summed interactions\": 0.042317882063798606}, {\"attributions\": -0.23464849591255188, \"summed interactions\": -0.15308122233545873}, {\"attributions\": -0.2649315893650055, \"summed interactions\": -0.2702444128226489}, {\"attributions\": -0.4460427165031433, \"summed interactions\": -0.39058472064789385}, {\"attributions\": 0.1577647477388382, \"summed interactions\": 0.122767205350101}, {\"attributions\": -0.0286323931068182, \"summed interactions\": -0.016155034871189855}, {\"attributions\": 0.6582381725311279, \"summed interactions\": 0.6874855622882023}, {\"attributions\": -0.02016006037592888, \"summed interactions\": 0.01260669321709429}, {\"attributions\": 0.06086261570453644, \"summed interactions\": 0.03349878163135145}, {\"attributions\": 0.05879175290465355, \"summed interactions\": 0.06280906796314412}, {\"attributions\": 0.13062502443790436, \"summed interactions\": 0.15656366331677418}, {\"attributions\": 0.6078202724456787, \"summed interactions\": 0.5504459098447114}, {\"attributions\": 0.05490218102931976, \"summed interactions\": 0.057555515493731946}, {\"attributions\": 0.40169575810432434, \"summed interactions\": 0.38668265513842925}, {\"attributions\": 0.012758221477270126, \"summed interactions\": -0.034194920812296914}, {\"attributions\": -0.053709931671619415, \"summed interactions\": -0.006167348750750534}, {\"attributions\": 0.2402232587337494, \"summed interactions\": 0.16620574818807654}, {\"attributions\": -0.3639599680900574, \"summed interactions\": -0.4057443788042292}, {\"attributions\": 0.16693685948848724, \"summed interactions\": 0.12672200896486174}, {\"attributions\": -0.15051506459712982, \"summed interactions\": -0.07553792768158019}, {\"attributions\": 0.05362210422754288, \"summed interactions\": 0.02010953618446365}, {\"attributions\": 0.5091856122016907, \"summed interactions\": 0.5316541762440465}, {\"attributions\": 0.08670356124639511, \"summed interactions\": 0.029066885709653434}, {\"attributions\": 0.8549279570579529, \"summed interactions\": 0.8739827965619043}, {\"attributions\": 0.13932427763938904, \"summed interactions\": 0.12598753639031202}, {\"attributions\": 0.013500555418431759, \"summed interactions\": -0.0034044663480017334}, {\"attributions\": 0.7104856371879578, \"summed interactions\": 0.7233809961471707}, {\"attributions\": -0.06856679171323776, \"summed interactions\": -0.07170014071743935}, {\"attributions\": 0.031048202887177467, \"summed interactions\": 0.03069910743215587}, {\"attributions\": 0.006602239795029163, \"summed interactions\": -0.011990799437626265}, {\"attributions\": -0.02383635938167572, \"summed interactions\": -0.010685956571251154}, {\"attributions\": -0.4585649371147156, \"summed interactions\": -0.454051619162783}, {\"attributions\": -0.03588689863681793, \"summed interactions\": -0.018055207779980265}, {\"attributions\": 0.51604825258255, \"summed interactions\": 0.589571415388491}, {\"attributions\": 0.04137832298874855, \"summed interactions\": 0.03276267501496477}, {\"attributions\": 0.2500670552253723, \"summed interactions\": 0.2134118607500568}, {\"attributions\": -0.2127513736486435, \"summed interactions\": -0.1484683586168103}, {\"attributions\": -0.13072840869426727, \"summed interactions\": -0.15865856884920504}, {\"attributions\": -0.16981936991214752, \"summed interactions\": -0.12474734303395962}, {\"attributions\": 0.007638594135642052, \"summed interactions\": 0.004738540581456618}, {\"attributions\": 0.017512204125523567, \"summed interactions\": 0.028110997227486223}, {\"attributions\": -0.2202473133802414, \"summed interactions\": -0.21720221851137467}, {\"attributions\": -0.022594919428229332, \"summed interactions\": -0.026639953117410187}, {\"attributions\": 0.07408219575881958, \"summed interactions\": 0.09458184766117483}, {\"attributions\": -0.01683712750673294, \"summed interactions\": -0.010328208049031673}, {\"attributions\": 0.039510101079940796, \"summed interactions\": -0.015137688871618593}, {\"attributions\": -0.6916122436523438, \"summed interactions\": -0.7091482996147533}, {\"attributions\": -0.16480404138565063, \"summed interactions\": -0.11167452193330973}, {\"attributions\": -0.06676827371120453, \"summed interactions\": -0.0692780560166284}, {\"attributions\": 0.01332949846982956, \"summed interactions\": 0.00010316813404642744}, {\"attributions\": -0.1482287496328354, \"summed interactions\": -0.14121192574384622}, {\"attributions\": -0.2254018634557724, \"summed interactions\": -0.2798450813861564}, {\"attributions\": 0.06034848093986511, \"summed interactions\": 0.011887651999131776}, {\"attributions\": -0.6024622321128845, \"summed interactions\": -0.6094274171628058}, {\"attributions\": -0.16256389021873474, \"summed interactions\": -0.11712104530306533}, {\"attributions\": -0.062285784631967545, \"summed interactions\": -0.08016276496346109}, {\"attributions\": -0.14722657203674316, \"summed interactions\": -0.12354286966728978}, {\"attributions\": 0.19213199615478516, \"summed interactions\": 0.24227502616122365}, {\"attributions\": -0.007693673949688673, \"summed interactions\": -0.023708384280325845}, {\"attributions\": 0.03174072876572609, \"summed interactions\": 0.04013705928809941}, {\"attributions\": -0.014032767154276371, \"summed interactions\": -0.01464199653128162}, {\"attributions\": -0.05437837168574333, \"summed interactions\": -0.08202808114583604}, {\"attributions\": 0.09290805459022522, \"summed interactions\": 0.11166212047100998}, {\"attributions\": -0.21072858572006226, \"summed interactions\": -0.1333750001504086}, {\"attributions\": -0.10609184205532074, \"summed interactions\": -0.10526633728295565}, {\"attributions\": -0.24082063138484955, \"summed interactions\": -0.22951884067151695}, {\"attributions\": -0.1986546516418457, \"summed interactions\": -0.39225251297466457}, {\"attributions\": -0.2840680778026581, \"summed interactions\": -0.22725882497616112}, {\"attributions\": -0.08369649201631546, \"summed interactions\": -0.12388705532066524}, {\"attributions\": -0.11126232147216797, \"summed interactions\": -0.10887769574765116}, {\"attributions\": 0.0171310156583786, \"summed interactions\": 0.018715471087489277}, {\"attributions\": -0.3710382878780365, \"summed interactions\": -0.45166958356276155}, {\"attributions\": -0.10718220472335815, \"summed interactions\": -0.12992983119329438}, {\"attributions\": -0.11197362095117569, \"summed interactions\": -0.17851507454179227}, {\"attributions\": -0.04852522909641266, \"summed interactions\": -0.022015309805283323}, {\"attributions\": -0.20343390107154846, \"summed interactions\": -0.11157342727528885}, {\"attributions\": -0.5288996696472168, \"summed interactions\": -0.36509083132841624}, {\"attributions\": -0.5103410482406616, \"summed interactions\": -0.538476662710309}, {\"attributions\": -0.06826730072498322, \"summed interactions\": -0.0553610849310644}, {\"attributions\": 0.08161261677742004, \"summed interactions\": 0.09726297738961875}, {\"attributions\": 0.003530155634507537, \"summed interactions\": 0.016674661892466247}, {\"attributions\": 0.13579292595386505, \"summed interactions\": 0.1364384688786231}, {\"attributions\": -0.2841278314590454, \"summed interactions\": -0.30859582824632525}, {\"attributions\": -0.5294100642204285, \"summed interactions\": -0.5071259664837271}, {\"attributions\": 0.1349859982728958, \"summed interactions\": 0.12713724840432405}, {\"attributions\": -0.036993566900491714, \"summed interactions\": -0.036905388871673495}, {\"attributions\": 0.48285919427871704, \"summed interactions\": 0.4452079913171474}, {\"attributions\": -0.5132884383201599, \"summed interactions\": -0.5200655907392502}, {\"attributions\": 0.09244731068611145, \"summed interactions\": 0.11770621413597837}, {\"attributions\": 0.018945617601275444, \"summed interactions\": 0.005407638964243233}, {\"attributions\": -0.10205645859241486, \"summed interactions\": -0.09164258700911887}, {\"attributions\": 0.25980889797210693, \"summed interactions\": 0.39881895622238517}, {\"attributions\": -0.03814009577035904, \"summed interactions\": -0.042972343508154154}, {\"attributions\": 0.3511783182621002, \"summed interactions\": 0.36518626008182764}]}}, {\"mode\": \"vega-lite\"});\n",
       "</script>"
      ],
      "text/plain": [
       "alt.Chart(...)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summed_interactions = np.sum(interactions, axis=1)\n",
    "data_df = pd.DataFrame({\n",
    "    'attributions': attributions.flatten(),\n",
    "    'summed interactions': summed_interactions.flatten()\n",
    "})\n",
    "alt.Chart(data_df).mark_point().encode(\n",
    "    alt.X('attributions:Q'),\n",
    "    alt.Y('summed interactions:Q')\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 20/20 [03:54<00:00, 11.74s/it]\n"
     ]
    }
   ],
   "source": [
    "batch_sizes = np.linspace(10, 200, 20).astype(int)\n",
    "times = []\n",
    "for batch_size in tqdm(batch_sizes):\n",
    "    start_time = time.time()\n",
    "    interactions = explainer.interactions(inputs, baseline,\n",
    "                     batch_size=batch_size, num_samples=100,\n",
    "                     use_expectation=True, output_indices=[0] * len(inputs),\n",
    "                     verbose=False, interaction_index=None)\n",
    "    end_time = time.time()\n",
    "    times.append(end_time - start_time)\n",
    "    assert interactions.shape == (50, 10, 10), 'batch_size: {}'.format(batch_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.vegalite.v3+json": {
       "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json",
       "config": {
        "mark": {
         "tooltip": null
        },
        "view": {
         "height": 300,
         "width": 400
        }
       },
       "data": {
        "name": "data-120399ce76e7d71f8ed7948d2c059ced"
       },
       "datasets": {
        "data-120399ce76e7d71f8ed7948d2c059ced": [
         {
          "Batch Size": 10,
          "Computation Time": 44.22788166999817
         },
         {
          "Batch Size": 20,
          "Computation Time": 22.459596157073975
         },
         {
          "Batch Size": 30,
          "Computation Time": 18.188489198684692
         },
         {
          "Batch Size": 40,
          "Computation Time": 14.116536617279053
         },
         {
          "Batch Size": 50,
          "Computation Time": 10.136930704116821
         },
         {
          "Batch Size": 60,
          "Computation Time": 10.172015190124512
         },
         {
          "Batch Size": 70,
          "Computation Time": 10.387219667434692
         },
         {
          "Batch Size": 80,
          "Computation Time": 10.730775117874146
         },
         {
          "Batch Size": 90,
          "Computation Time": 11.52274489402771
         },
         {
          "Batch Size": 100,
          "Computation Time": 7.58106255531311
         },
         {
          "Batch Size": 110,
          "Computation Time": 7.512383222579956
         },
         {
          "Batch Size": 120,
          "Computation Time": 7.577284336090088
         },
         {
          "Batch Size": 130,
          "Computation Time": 7.512719631195068
         },
         {
          "Batch Size": 140,
          "Computation Time": 7.576815366744995
         },
         {
          "Batch Size": 150,
          "Computation Time": 7.507656097412109
         },
         {
          "Batch Size": 160,
          "Computation Time": 7.552083969116211
         },
         {
          "Batch Size": 170,
          "Computation Time": 7.484725475311279
         },
         {
          "Batch Size": 180,
          "Computation Time": 7.557895183563232
         },
         {
          "Batch Size": 190,
          "Computation Time": 7.550340414047241
         },
         {
          "Batch Size": 200,
          "Computation Time": 7.488744735717773
         }
        ]
       },
       "encoding": {
        "x": {
         "field": "Batch Size",
         "type": "quantitative"
        },
        "y": {
         "field": "Computation Time",
         "type": "quantitative"
        }
       },
       "mark": "line"
      },
      "image/png": "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",
      "text/plain": [
       "<VegaLite 3 object>\n",
       "\n",
       "If you see this message, it means the renderer has not been properly enabled\n",
       "for the frontend that you are using. For more information, see\n",
       "https://altair-viz.github.io/user_guide/troubleshooting.html\n"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "time_df = pd.DataFrame({\n",
    "    'Batch Size': batch_sizes,\n",
    "    'Computation Time': times\n",
    "})\n",
    "alt.Chart(time_df).mark_line().encode(\n",
    "    alt.X('Batch Size:Q'),\n",
    "    alt.Y('Computation Time:Q')\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
